layui.define(['pro'], function (exports) {
    var pro = layui.pro;
    var hint = layui.hint();
    var layer = layui.layer;
    var $ = layui.$;
    var form = layui.form;
    var table = layui.table;

    var tableExt = {
        DEL_TABLE_TOOL: function (obj) {
            var rowDelUrl = obj.config.rowDelUrl;
            if (!rowDelUrl) {
                hint.error('rowDelUrl 未设置！');
                return;
            }
            //要删除的数据主键
            var removeId = obj.data.id;
            pro.confirm(`你确认要删除数据${removeId}吗？`).then(() => {
                    return pro.ajax(
                        {
                            type: 'delete',
                            url: rowDelUrl + removeId
                        }
                    );
                }
            ).then(function (r) {
                pro.alertInfo('删除成功！');
                table.reload(obj.config.id);
            }).catch(function (msg) {
                pro.alertError('删除失败:' + (msg || ''));
            });
        },
        ADD_TABLE_TOOLBAR: function (obj) {
            var addUrl = obj.config?.addUrl;
            var addDialogElem = obj.config?.addDialogElem;
            if (!addUrl) {
                hint.error('addUrl 未设置！');
                return;
            }
            if (!addDialogElem) {
                hint.error('addDialogElem 未设置！');
                return;
            }
            var submitFormFilter = $(obj.config.addDialogElem).find('form:first').attr('lay-filter');
            if (!submitFormFilter) {
                hint.error('新增弹窗 from lay-filter 未设置！');
                return;
            }
            layer.open({
                type: 1,// page 层类型
                area: 'auto',
                title: '新增',
                skin: 'layui-layer-molv',//墨绿主题
                shade: [0.9, '#000'], // 遮罩
                shadeClose: false, // 点击遮罩区域，关闭弹层
                maxmin: true, // 允许全屏最小化
                anim: 0, // 0-6 的动画形式，-1 不开启
                closeBtn: 0,//  不显示关闭图标
                content: $(obj.config.addDialogElem),
                btn: ["保存", "取消"],
                yes: (index, layero) => {
                    form.submit(submitFormFilter, (data) => {
                        pro.ajax(
                            {
                                type: 'post',
                                url: addUrl,
                                data: JSON.stringify(data.field),
                                contentType: 'application/json'
                            }
                        ).then((r) => {
                            layer.closeAll();
                            pro.alertInfo('新增成功！');
                            table.reload(obj.config.id, {});
                        }).catch((msg) => {
                            pro.alertError('新增失败！' + msg || '');
                        });
                        return false; // 阻止默认 form 跳转
                    });
                },
                cancel: (index, layero, that) => {
                    if (confirm('确定要关闭么')) {
                        layer.close(index);
                    }
                    return false; // 阻止默认关闭行为
                }
            });
        }
    }
    //tab设置公共参数
    table.set({
        method: 'post',
        contentType: 'application/json',
        dataType: 'json',
        request: {
            pageName: 'page', // 页码的参数名称，默认：page
            limitName: 'pageSize' // 每页数据条数的参数名，默认：limit
        },
        parseData: function (res) {
            return {
                code: res.status, //解析接口状态
                msg: res.msg, //解析提示文本
                count: res.data?.total || 0, //解析数据长度
                data: res.data?.items || [] //解析数据列表
            };
        },
        //开启分页
        page: true,
        //头部左侧工具栏
        toolbar: '<div class="layui-btn-container">\n' +
            '  <button type="button" class="layui-btn layui-btn-xs" lay-event="ADD_TABLE_TOOLBAR"><i class="layui-icon layui-icon-addition"></i></button>\n' +
            '  <button type="button" class="layui-btn layui-btn-xs" lay-event="SET_TABLE_TOOLBAR"><i class="layui-icon layui-icon-set"></i></button>\n' +
            '</div>',
        //头部右侧工具栏
        defaultToolbar: ['filter', 'exports'],
        height: 'full',
    });

    //监听头部工具栏(左侧和右侧都在这里)
    layui.onevent('table', 'toolbar()', function (obj) {
        var event = obj.event;
        if (event === 'ADD_TABLE_TOOLBAR') {
            tableExt.ADD_TABLE_TOOLBAR(obj);
        } else if (event === 'SET_TABLE_TOOLBAR') {
            layer.msg('列设置');
        }
    });

    //监听行工具栏
    layui.onevent('table', 'tool()', function (obj) {
        var event = obj.event;
        if (event === 'DEL_TABLE_TOOL') {
            tableExt.DEL_TABLE_TOOL(obj);
        } else if (event === 'EDIT_TABLE_TOOL') {
            pro.alertWarn('暂不支持编辑，敬请期待！');
        }
    });

    exports('tableExt', tableExt);
});